#ifndef AREAIMAGEN_H
#define AREAIMAGEN_H

#include <QColor>
#include <QImage>
#include <QPoint>
#include <QWidget>
#include "imagen.h"
//wheelEvent()

class areaImagen : public QWidget
{
    Q_OBJECT

public:
    IplImage *ROI(/*IplImage* imagen,QPoint puntoA,QPoint puntoB*/);
    QSize sizeHint() const;
    areaImagen(QWidget *parent = 0);
    bool mostrarImagen(const QString &nombreArchivo);
    bool estaModificado() const { return modificado; }
    QString archivoReciente() { return archReciente; }
//    void grises(imagen img);
    IplImage* obtenerImagenCv(){return imgCv;}
    QImage obtenerImagenQt(){return imgQt;}
    IplImage* obtenerImagenCvAux(){return imgCvAux;}
    QPoint obtenerPrimero(){return primero;}
    QPoint obtenerSegundo(){return segundo;}
    void modificarImagenCv(IplImage* img){imgCv = img;}
    void modificarImagenQt(QImage img){imgQt=img;}
    void modificarImagenCvAux(IplImage* img){imgCvAux=img;}

    IplImage* mejorarCalidadImagen(IplImage* img,int filtro);
    void modificarArea(IplImage* imagen);
    void modificarRutaArchivo(const QString &nombreArchivo);
    const QString nombreArch(const QString &rutaCompleta);

public slots:
    bool guardar();
    bool guardarComo();
    bool posibleGuardar();

protected:
    void paintEvent(QPaintEvent *evento);
    void mouseMoveEvent(QMouseEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void closeEvent(QCloseEvent *evento);

private:
    QString filtroArchivos;
    QMenu *menu;
    QPoint primero;
    QPoint segundo;

protected:
    QImage imgQt;
   IplImage* imgCvAux;

public:
    IplImage* imgCv;
    bool modificado;
    QString archReciente;
    int zoom;
    bool seleccion;
    bool presionado;
};
#endif // AREAIMAGEN_H
